﻿//using System;
//using System.Collections.Generic;
//using System.Text;
//using BlueLotus7.Common;
//using System.Runtime.Serialization;

//namespace BlueLotus7.Contract
//{
//    [Serializable]
//    [DataContract]
//    [KnownType(typeof(ObjectStatus))]
//    public class Role : IValidate
//    {
//        #region Fields

//        [DataMember]
//        Guid roleKey;
//        [DataMember]
//        string roleName;
//        [DataMember]
//        string description;
//        [DataMember]
//        ObjectStatus objectStatus = ObjectStatus.Normal;

//        #endregion

//        #region Property

//        public Guid RoleKey
//        {
//            get { return roleKey; }
//        }
//        public string RoleName
//        {
//            get { return roleName; }
//            set { roleName = value; }
//        }

//        public string Description
//        {
//            get { return description; }
//            set { description = value; }
//        }

//        public ObjectStatus ObjectStatus
//        {
//            get { return objectStatus; }
//            set { objectStatus = value; }
//        }

//        #endregion

//        public Role(Guid key, string roleName)
//        {
//            this.roleKey = key;
//            this.roleName = roleName;
//        }

//        private Role(string roleName)
//        {
//            this.roleKey = Guid.NewGuid();
//            this.roleName = roleName;
//        }

//        private Role() { }

//        public Role GenerateRole(string roleId)
//        {
//            if (string.IsNullOrWhiteSpace(roleId))
//            {
//                throw new NullOrEmptyStringException(roleId);
//            }
//            else
//            {
//                return new Role(roleId);
//            }
//        }

//        #region IValidate 成员

//        public bool IsValid
//        {
//            get
//            {
//                try
//                {
//                    Validate();
//                    return true;
//                }
//                catch { return false; }
//            }
//        }

//        public void Validate()
//        {
//            if (roleName == null || roleName.Length < Constant.SystemDefinition.RoleIdMinLength || roleName.Length > Constant.SystemDefinition.RoleIdMaxLength)
//            {
//                throw new InvalidObjectException("roleName");
//            }
//        }

//        #endregion
//    }
//}
